package net.togogo.egouweb1238.common.page;

import java.util.ArrayList;
import java.util.List;

public class Pagination extends SimplePage {

	public Pagination() {
	}

	/**
	* 构造器
	* 
	* @param pageNo
	*            页码
	* @param pageSize
	*            每页几条数据
	* @param totalCount
	*            总共几条数据
	*/
	public Pagination(int pageNo, int pageSize, int totalCount) {
		super(pageNo, pageSize, totalCount);

	}

	/**
	* 构造器
	* 
	* @param pageNo
	*            页码
	 * @param pageSize
	 *            每页几条数据
	 * @param totalCount
	 *            总共几条数据
	* @param list
	*            分页内容
	*/
	public Pagination(int pageNo, int pageSize, int totalCount, List<?> list) {
		super(pageNo, pageSize, totalCount);
		this.list = list;
	}

	/**
	 * 第一条数据位置
	* 
	  * @return
	*/
	public int getFirstResult() {
		return (pageNo - 1) * pageSize;
	}

	/**
	 * 当前页的数据
	*/
	private List<?> list;

	/**
	* 当前页的分页样式
	*/
	private List<String> pageView;

	/**
	 * 获得分页内容
	* 
	* @return
	*/
	public List<?> getList() {
		return list;
	}

	/**
	  * 设置分页内容
	 * 
	* @param list
	*/
	@SuppressWarnings("unchecked")
	public void setList(List list) {
		this.list = list;
	}

	/**
	 * 获得分页样式
	* 
	  * @return
	  */
	public List<String> getPageView() {
		return pageView;
	}

	/**
	 * 设置分页样式
	* 
	* @param list
	 */
	public void setPageView(List<String> pageView) {
		this.pageView = pageView;
	}

	/**
	  * 分页显示样示部分
	 */
	public void pageView(String url, String params) {

		//集合中每一个条目就是一个分页的选项
		//list
		//<a ...>
		//<a ...>
		pageView = new ArrayList<String>();

		if (this.pageNo != 1) {
			//<a href="+url+"?"+params>
			//<a href="/product/list.do?pageNo=1&brandId=xx&name=xx"></a>
			pageView.add(
					"<a href='"+ url + "?" + params + "&pageNo=1'\"><font size=2>首页</font></a>");
			pageView.add(
					"<a href='"+ url + "?" + params + "&pageNo=" + (this.pageNo - 1) + "'\"><font size=2>上一页</font></a>");
		} else {
			pageView.add("<font size=2>首页</font>");
			pageView.add("<font size=2>上一页</font>");
		}

		if (this.getTotalPage() <= 10) {
			for (int i = 0; i < this.getTotalPage(); i++) {
				if ((i + 1) == this.pageNo) {
					pageView.add("<strong>" + this.pageNo + "</strong>");
					i = i + 1;
					if (this.pageNo == this.getTotalPage())
						break;
				}
				pageView.add(
						"<a href='"
								+ url + "?" + params + "&pageNo=" + (i + 1) + "'\">" + (i + 1) + "</a>");
			}
		} else if (this.getTotalPage() <= 20) {
			//没有把...加上
			int l = 0;
			int r = 0;
			if (this.pageNo < 5) {
				l = this.pageNo - 1;
				r = 10 - l - 1;
			} else if (this.getTotalPage() - this.pageNo < 5) {
				r = this.getTotalPage() - this.pageNo;
				l = 10 - 1 - r;
			} else {
				l = 4;
				r = 5;
			}
			int tmp = this.pageNo - l;
			for (int i = tmp; i < tmp + 10; i++) {
				if (i == this.pageNo) {
					pageView.add("<strong>" + this.pageNo + "</strong>");
					i = i + 1;
					if (this.pageNo == this.getTotalPage())
						break;
				}
				pageView.add(
						"<a href='"
								+ url + "?" + params + "&pageNo=" + (i) + "'\">" + (i) + "</a>");
			}

		} else if (this.pageNo < 7) {
			for (int i = 0; i < 8; i++) {
				if (i + 1 == this.pageNo) {
					pageView.add("<strong>" + this.pageNo + "</strong>");
					i = i + 1;
				}
				pageView.add(
						"<a href='"
								+ url + "?" + params + "&pageNo=" + (i + 1) + "'\">" + (i + 1) + "</a>");
			}
			pageView.add("...");
			pageView.add(
					"<a href='"
							+ url + "?" + params + "&pageNo=" + (this.getTotalPage() - 1) + "'\">"
							+ (this.getTotalPage() - 1) + "</a>");
			pageView.add(
					"<a href='"
							+ url + "?" + params + "&pageNo=" + (this.getTotalPage()) + "'\">" + (this.getTotalPage())
							+ "</a>");
		} else if (this.pageNo > this.getTotalPage() - 6) {
			pageView.add(
					"<a href='"
							+ url + "?" + params + "&pageNo=" + (1) + "'\">" + (1) + "</a>");
			pageView.add(
					"<a href='"
							+ url + "?" + params + "&pageNo=" + (2) + "'\">" + (2) + "</a>");
			pageView.add("...");
			for (int i = this.getTotalPage() - 8; i < this.getTotalPage(); i++) {
				if (i + 1 == this.pageNo) {
					pageView.add("<strong>" + this.pageNo + "</strong>");
					i = i + 1;
					if (this.pageNo == this.getTotalPage())
						break;
				}
				pageView.add(
						"<a href='"
								+ url + "?" + params + "&pageNo=" + (i + 1) + "'\">" + (i + 1) + "</a>");
			}
		} else {
			pageView.add(
					"<a href='"
							+ url + "?" + params + "&pageNo=" + (1) + "'\">" + (1) + "</a>");
			pageView.add(
					"<a href='"
							+ url + "?" + params + "&pageNo=" + (2) + "'\">" + (2) + "</a>");
			pageView.add("...");

			pageView.add(
					"<a href='"
							+ url + "?" + params + "&pageNo=" + (this.pageNo - 2) + "'\">" + (this.pageNo - 2)
							+ "</a>");
			pageView.add(
					"<a href='"
							+ url + "?" + params + "&pageNo=" + (this.pageNo - 1) + "'\">" + (this.pageNo - 1)
							+ "</a>");
			pageView.add("<strong>" + this.pageNo + "</strong>");
			pageView.add(
					"<a href='"
							+ url + "?" + params + "&pageNo=" + (this.pageNo + 1) + "'\">" + (this.pageNo + 1)
							+ "</a>");
			pageView.add(
					"<a href='"
							+ url + "?" + params + "&pageNo=" + (this.pageNo + 2) + "'\">" + (this.pageNo + 2)
							+ "</a>");

			pageView.add("...");
			pageView.add(
					"<a href='"
							+ url + "?" + params + "&pageNo=" + (this.getTotalPage() - 1) + "'\">"
							+ (this.getTotalPage() - 1) + "</a>");
			pageView.add(
					"<a href='"
							+ url + "?" + params + "&pageNo=" + (this.getTotalPage()) + "'\">" + (this.getTotalPage())
							+ "</a>");
		}
		if (this.pageNo != this.getTotalPage()) {
			pageView.add(
					"<a href='"
							+ url + "?" + params + "&pageNo=" + (this.pageNo + 1) + "'\"><font size=2>下一页</font></a>");
			pageView.add(
					"<a href='"
							+ url + "?" + params + "&pageNo=" + this.getTotalPage() + "'\"><font size=2>尾页</font></a>");
		} else {
			pageView.add("<font size=2>下一页</font>");
			pageView.add("<font size=2>尾页</font>");
		}
		pageView.add("共<var>" + getTotalPage()
				+ "</var>页 到第<input type='text' id='PAGENO'  size='3' />页 <input type='button' id='skip' class='hand btn60x20' value='确定' onclick=\"javascript:window.location.href= '"
				+ url + "?" + params + "&pageNo=' + $('#PAGENO').val() \"/>");
	}
}
